package br.ufrpe.bsi.pvs.database.roupa;

import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import br.ufrpe.bsi.pvs.database.Conexao;
import br.ufrpe.bsi.pvs.model.roupa.Tamanho;

public class TamanhoDAOImpl implements TamanhoDAO {

	@Override
	public void salvar(Tamanho object) {

	}

	@Override
	public void remover(Tamanho object) {

	}

	@Override
	public void remover(Serializable id) {

	}

	@Override
	public List<Tamanho> listar() {
		List<Tamanho> tamanhos = new ArrayList<Tamanho>();

		try (Connection con = Conexao.getConnection()) {
			PreparedStatement ps = con
					.prepareStatement("SELECT * FROM TAMANHO");
			ResultSet rs = ps.executeQuery();

			while (rs.next()) {
				tamanhos.add(Tamanho.getTamanho(rs.getString("nome")));
			}

		} catch (Exception e) {
			System.out.println("[DB ERROR] cant list Tamanhos");
		}

		return tamanhos;
	}

	@Override
	public Tamanho pesquisar(Serializable id) {
		try (Connection con = Conexao.getConnection()) {
			PreparedStatement ps = con
					.prepareStatement("SELECT tamanho FROM pvs.tamanho WHERE ID = ?");
			ps.setInt(1, (Integer) id);

			ResultSet rs = ps.executeQuery();

			while (rs.next())
				return Tamanho.getTamanho(rs.getString("tamanho"));

		} catch (Exception e) {
			System.out.println("[DB ERROR] cant found tamanho id: " + id);
		}

		return null;
	}

	@Override
	public Tamanho pesquisar(String name) {
		try (Connection con = Conexao.getConnection()) {
			PreparedStatement ps = con
					.prepareStatement("SELECT nome FROM TAMANHO WHERE NOME = ?");
			ps.setString(1, name);

			ResultSet rs = ps.executeQuery();

			while (rs.next())
				return Tamanho.getTamanho(rs.getString("nome"));

		} catch (Exception e) {
			System.out.println("[DB ERROR] cant found tamanho named: " + name);
		}

		return null;
	}

}
